import java.util.Locale;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lenovo
 * Date: 2022-09-11
 * Time: 9:35
 */
public class Demo1 {
    //静态内部类不依赖于外部类
    static class  Student{
        String name;
        int age;

        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }

        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

    public static void main(String[] args) {
        String s1 = "abcdef";
        String s2 = "abc";
        String s3 = "adc";
        System.out.println(s1.equals(s2));
        System.out.println(s1.compareTo(s2));//3 前k个字符相等.k为两个最小字符串的长度,返回两个字符串的长度差
        System.out.println(s1.compareTo(s3));//-2 按照字典序进行比较,遇到不相同的字符b和d,返回b-d的大小

        //字符串查找
        /**
         * charAt(int):char
         */
        char ch = s1.charAt(1);
        System.out.println(ch);
        /**
         * indexOf(char ch):int
         * 从前往后找,找ch第一次出现的位置
         */
        String s4 = "a1sa1sasdf";
        int index = s4.indexOf('s');
        int index0 = s4.indexOf('s',1);//从fromIndex处开始找ch第一次出现的位置
        System.out.println(index);
        System.out.println(index0);

        int index1 = s4.indexOf("as");//返回str第一次出现的位置
        System.out.println(index1);

        /**
         * 其他类型转字符串类型
         */
        String ss = String.valueOf(123);
        System.out.println(ss);
        String stu = String.valueOf(new Student("张三",18));
        System.out.println(stu);
        /**
         * 字符串转数字 parseInt parseDouble
         */
        int a = Integer.parseInt("123");
        System.out.println(a);
        double b = Double.parseDouble("12.34");
        System.out.println(b);
        /**
         * 大小写转换 toUpperCase toLowerCase
         * 字符串的别可变性,这里也是产生了一个新的数组
         *
         */
        String sLow = "hello";
        String uP = sLow.toUpperCase(Locale.ROOT);
        System.out.println(uP);
        System.out.println(uP.toLowerCase());

        /**
         * 字符串转数组 toCharArray
         */
        char[] array = sLow.toCharArray();
        for (char x:
             array) {
            System.out.print(x+" ");
        }
        System.out.println();
        /**
         * 数组转字符串 直接调用带value的构造方法
         */
        String sss = new String(array);
        System.out.println(sss);

        /**
         * 格式化 指定一个格式来输出字符串
         */

        String ssss = String.format("%d-%d-%d",2022,9,11);
        System.out.println(ssss);

        /**
         * 字符串替换 由于字符串类型是不可变类型,所以替换之后实际上是产生了一个新的类型
         */
        String sA = "hello";
        System.out.println(sA.replace("l","p"));
        System.out.println(sA.replaceFirst("l","p"));//替换首个内容

        /**
         * 字符串拆分 split
         */

        String sB = "hello world";
        String[] ret = sB.split(" ");//按照空格分开
        for (String s:
             ret) {
            System.out.println(s);
        }
        String sC = "once write run anywhere";

        String[] ret1 = sC.split(" ",2);
        for (String s:
             ret1) {
            System.out.println(s);
        }
    }
}
